package com.demo.function.spring.feign.fallback;

import com.alibaba.fastjson.JSON;
import com.demo.function.spring.feign.MiyaFeignClient;
import com.demo.model.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 定义MiyaFeignClient降级处理类，服务提供发出现异常，执行降级方法返回结果给消费方
 * Fallback有一个缺点只要是异常都会执行降级处理，不能自定义指定异常才执行降级处理
 */
@Slf4j
@Component
public class MiyaFeignClientFallback implements MiyaFeignClient {

    @Override
    public User modifyUserException(User user) {
        userLong(user);
        return new User().setUserId(99999L).setUserName("降级处理");
    }

    @Override
    public User modifyUser(User user) {
        userLong(user);
        return null;
    }

    private void userLong(User user) {
        log.warn("fallback处理，user请求参数：{}", JSON.toJSONString(user));
    }


}
